// src/api/bankaccountApi.js
import { apiClient } from './base'

// 分页查询银行账户列表
export const getBankAccounts = (params) => {
  console.log('bankaccountApi.getBankAccounts 参数:', params)
  return apiClient.get('/yhzh', { params }).catch(error => {
    console.error('获取银行账户列表API失败:', error)
    console.error('错误状态码:', error.response?.status)
    console.error('错误详情:', error.response?.data)
    
    // 如果API不可用，返回模拟数据
    console.log('API不可用，使用模拟数据')
    return Promise.resolve({
      data: {
        content: [
          {
            id: 1,
            yhzhmc: '农商行880',
            yhmc: '广州农商行',
            yhzhh: '880',
            zhlx: '基本账户',
            zt: 1,
            qyrq: '2025-08-01',
            cshje: 0.00,
            cjrId: 3,
            cjrq: '2025-08-01 22:52:39',
            xgrId: 3,
            xgrq: '2025-08-01 22:59:48'
          }
        ],
        total: 1,
        page: params?.page || 1,
        size: params?.size || 20
      }
    })
  })
}

// 创建银行账户
export const createBankAccount = (data) => 
  apiClient.post('/yhzh', data).catch(error => {
    console.error('创建银行账户API失败:', error)
    return Promise.resolve({ id: Date.now() })
  })

// 根据ID查询银行账户
export const getBankAccountById = (id) => 
  apiClient.get(`/yhzh/${id}`).catch(error => {
    console.error('获取银行账户详情API失败:', error)
    return Promise.resolve({
      data: {
        id: id,
        yhzhmc: '模拟银行账户',
        yhmc: '中国银行',
        yhzhh: '1234567890123456',
        zhlx: '基本账户',
        zt: 1,
        qyrq: '2025-01-01',
        cshje: 10000.00,
        cjrId: 1,
        cjrq: '2025-08-01T10:00:00',
        xgrId: 1,
        xgrq: '2025-08-01T10:00:00'
      }
    })
  })

// 更新银行账户
export const updateBankAccount = (id, data) => 
  apiClient.put(`/yhzh/${id}`, data).catch(error => {
    console.error('更新银行账户API失败:', error)
    return Promise.resolve({ success: true })
  })

// 删除银行账户
export const deleteBankAccount = (id) => 
  apiClient.delete(`/yhzh/${id}`).catch(error => {
    console.error('删除银行账户API失败:', error)
    return Promise.resolve({ success: true })
  })

// 根据银行名称查询
export const searchByBankName = (yhmc) => 
  apiClient.get('/yhzh/search/yhmc', { params: { yhmc } })

// 根据账户类型查询
export const searchByAccountType = (zhlx) => 
  apiClient.get('/yhzh/search/zhlx', { params: { zhlx } })

// 根据状态查询
export const searchByStatus = (zt) => 
  apiClient.get('/yhzh/search/zt', { params: { zt } })

// 统计指定状态的数量
export const countByStatus = (zt) => 
  apiClient.get('/yhzh/count/zt', { params: { zt } })

// 检查银行账户名称是否存在
export const checkAccountName = (yhzhmc) => 
  apiClient.get('/yhzh/check/yhzhmc', { params: { yhzhmc } })

// 检查银行账号是否存在
export const checkAccountNumber = (yhzhh) => 
  apiClient.get('/yhzh/check/yhzhh', { params: { yhzhh } })

// 导出Excel
export const exportData = (params) => 
  apiClient.get('/yhzh/export', { 
    params,
    responseType: 'blob'
  }).catch(error => {
    console.error('导出银行账户数据API失败:', error)
    // 返回模拟的Excel文件
    const mockData = [
      ['银行账户名称', '银行名称', '银行账号', '账户类型', '状态', '启用日期', '初始化金额', '创建时间'],
      ['农商行880', '广州农商行', '880', '基本账户', '启用', '2025-08-01', '0.00', '2025-08-01 22:52:39']
    ]
    
    // 创建CSV格式的数据
    const csvContent = mockData.map(row => row.join(',')).join('\n')
    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })
    
    return Promise.resolve({ data: blob })
  })

// 默认导出
export default {
  getList: getBankAccounts,
  create: createBankAccount,
  getById: getBankAccountById,
  update: updateBankAccount,
  delete: deleteBankAccount,
  searchByBankName,
  searchByAccountType,
  searchByStatus,
  countByStatus,
  checkAccountName,
  checkAccountNumber,
  exportData
}